home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
asmutil
/
asmhelp.zip
/
BIOS_DOS.DOC
next >
Wrap
Text File
|
1987-10-30
|
29KB
|
1,310 lines
**************************************************************************
** **
** bios_dos.doc **
** **
** This file documents the services provided by the ROM BIOS and **
** DOS of the IBM-PC family of computers. **
** **
**************************************************************************
ROM BIOS
--------
rom_prt_sc ROM PRINT SCREEN SERVICE [int 05]
in: none
out: 0050:0000 = status code
00 = ready
01 = busy
FF = previous operation not completed successfully
rom_vid ROM VIDEO SERVICES [int 10]
WRITE VIDEO MODE - rom_vid
in: ah = wr_vid_mode [00]
al = mode 00 = 40 X 25 text 16 grey \
01 = 40 X 25 text 16/8 color |
02 = 80 X 25 text 16 grey |
03 = 80 X 25 text 16/8 color | CGA
04 = 320 X 200 graphics 4 color |
05 = 320 X 200 graphics 4 grey |
06 = 640 X 200 graphics b/w /
07 = 80 X 25 text b/w | MDA
08 = 160 X 200 graphics 16 color \
09 = 320 X 200 graphics 16 color | PC-JR
0A = 640 X 200 graphics 4 color /
0D = 320 X 200 graphics 16 color \
0E = 640 X 200 graphics 16 color | EGA
0F = 640 X 350 graphics 4 color /
out: none
notes: Setting mode clears the buffers, clearing the screen (slowly).
WRITE CURSOR SIZE - rom_vid
in: ah = wr_cur_size [01]
ch = start line CGA = 0 to 7, default = 6, 7
cl = end line MDA = 0 to 13, default = 12, 13
out: none
notes: Setting ch bit 5 causes cursor to disappear. If start line
is less than end line, a normal single part cursor is created.
If start line is greater than end line, a two part cursor is
created.
WRITE CURSOR POSITION - rom_vid
in: ah = wr_cur_pos [02]
bh = page (0 for graphics modes)
dh = row
dl = col
out: none
notes: Writing cursor to an off screen position causes it to
disappear.
READ CURSOR POSITION - rom_vid
in: ah = rd_cur_pos [03]
out: bh = page (0 for graphics modes)
ch = start line
cl = end line
dh = row
dl = col
READ LIGHT PEN POSITION - rom_vid
in: ah = rd_pen_pos [04]
out: ah = pen trigger switch
1 = triggered
0 = not triggered
bx = pixel col
ch = pixel row
dh = char row
dl = char col
WRITE ACTIVE PAGE - rom_vid
in: ah = wr_act_page [05]
al = page
out: none
PC-JR WRITE ACTIVE PAGE - rom_vid
in: ah = wr_act_page [05]
al = 80
out: bh = CRT reg
bl = CPU reg
in: ah = wr_act_page [05]
al = 81
bl = CPU reg
out: bh = CRT reg
bl = CPU reg
in: ah = wr_act_page [05]
al = 82
bh = CRT reg
out: bh = CRT reg
bl = CPU reg
in: ah = wr_act_page [05]
al = 83
bh = CRT reg
bl = CPU reg
out: bh = CRT reg
bl = CPU reg
SCROLL WINDOW UP - rom_vid
in: ah = scroll_up [06]
al = lines (0 = all)
bh = color attribute
bit 7 = blink
bit 6 = backgnd red
bit 5 = backgnd green
bit 4 = backgnd blue
bit 3 = foregnd intensity
bit 2 = foregnd red
bit 1 = foregnd green
bit 0 = foregnd blue
ch = upper row
cl = left col
dh = lower row
dl = right col
out: none
SCROLL WINDOW DOWN - rom_vid
in: ah = scroll_down [07]
al = lines (0 = all)
bh = color attribute (see scroll_up)
ch = upper row
cl = left col
dh = lower row
dl = right col
out: none
READ CHARACTER AND ATTRIBUTE - rom_vid
in: ah = rd_char_attr [08]
bh = page
out: al = char
ah = color attribute (see scroll_up)
WRITE CHARACTER AND ATTRIBUTE - rom_vid
in: ah = wr_char_attr [09]
al = char
bh = page
bl = color attribute (see scroll_up)
cx = chars
out: none
notes: Cursor is not moved.
WRITE CHARACTER - rom_vid
in: ah = wr_char [0A]
al = char
bh = page
bl = graphics mode color
cx = chars
out: none
notes: Cursor is not moved.
WRITE COLOR PALETTE - rom_vid
in: ah = wr_col_pal [0B]
bh = palette id
bl = color
out: none
WRITE PIXEL - rom_vid
in: ah = wr_pixel [0C]
al = color
cx = pixel col
dl = pixel row
out: none
READ PIXEL - rom_vid
in: ah = rd_pixel [0D]
cx = pixel col
dl = pixel row
out: al = color
WRITE TTY CHARACTER - rom_vid
in: ah = wr_tty [0E]
al = char
bl = graphics mode color
out: none
READ VIDEO MODE - rom_vid
in: ah = rd_vid_mode [0F]
out: ah = width in chars
al = video mode
bh = page (0 for graphics modes)
PC-JR WRITE COLOR PALETTE REGISTER - rom_vid
in: ah = wr_pal_reg [10]
al = 00
bh = palette value
bl = palette reg
out: none
in: ah = wr_pal_reg [10]
al = 01
bh = border color
out: none
PC-AT WRITE STRING - rom_vid
in: ah = wr_string [13]
al = cursor movement switch
00 = no
01 = yes
bl = color attribute (see scroll_up)
bh = page
dx = start cursor position
cx = string length
es:bp = string pointer
out: none
rom_equ ROM EQUIPMENT SERVICE [int 11]
in: none
out: ax bit settings = equipment list
0 = disk drive
1 = math coprocessor
2,3 = system board RAM in 16k blocks
4,5 = initial video mode
00 = unused
01 = 40 X 25 color
10 = 80 X 25 color
11 = 80 X 25 b/w
6,7 = number of disk drives
8 = DMA not present
9,10,11 = number of RS232 cards in system
12 = game I/O present
13 = serial printer present
14,15 = number of printers present
rom_mem ROM MEMORY SIZE SERVICE [int 12]
in: none
out: ax = size in K
rom_disk ROM DISKETTE SERVICES [int 13]
RESET DISKETTE SYSTEM - rom_disk
in: ah = rst_disk [00]
out: none
READ DISKETTE STATUS - rom_disk
in: ah = rd_disk_stat [01]
out: al = return code
01 = bad command
02 = address mark not found
03 = write protected
04 = sector not found
06 = no disk
08 = DMA overrun
09 = DMA across 64K boundary
10 = bad CRC
20 = controller failed
40 = seek failed
80 = time out
READ DISKETTE SECTOR - rom_disk
in: ah = rd_disk_sect [02]
al = sectors to read
ch = track
cl = sector
dh = head
dl = drive
es:bx = buffer pointer
out: cf = error
ah = return code (see rd_disk_stat)
al = sectors read
WRITE DISKETTE SECTOR - rom_disk
in: ah = wr_disk_sect [03]
al = sectors to write
ch = track
cl = sector
dh = head
dl = drive
es:bx = buffer pointer
out: cf = error
ah = return code (see rd_disk_stat)
al = sectors written
VERIFY DISKETTE SECTOR - rom_disk
in: ah = ver_disk_sect [04]
al = sectors to verify
ch = track
cl = sector
dh = head
dl = drive
es:bx = buffer pointer
out: cf = error
ah = return code (see rd_disk_stat)
al = sectors verified
FORMAT DISKETTE TRACK - rom_disk
in: ah = fmt_disk_trk [05]
al = sectors to format
ch = track
cl = sector
dh = head
dl = drive
es:bx = four byte address field pointer
byte 1 = track
byte 2 = head
byte 3 = sector
byte 4 = bytes/sector
out: cf = error
ah = return code (see rd_disk_stat)
al = sectors formatted
PC-AT READ DISKETTE PARAMETERS - rom_disk
in: ah = rd_disk_parm [08]
out: cf = error
ah = return code (see rd_disk_stat)
dl = drives
dh = max sides
cl = max sectors
ch = max tracks
PC-AT INITIALIZE DISKETTE PARAMETERS - rom_disk
in: ah = init_disk_parm [09]
out: cf = error
ah = return code (see rd_disk_stat)
int 41 vector points to drive 0 table
int 46 vector points to drive 1 table
PC-AT READ DISKETTE LONG - rom_disk [0A]
in: ah = rd_disk_long
ch = cylinder
cl = sector
dh = head
dl = drive
es:bx = buffer pointer
out: cf = error
ah = return code (see rd_disk_stat)
PC-AT WRITE DISKETTE LONG - rom_disk
in: ah = wr_disk_long [0B]
ch = sector
dh = head
dl = drive
es:bx = buffer pointer
out: cf = error
ah = return code (see rd_disk_stat)
PC-AT SEEK DISKETTE TRACK - rom_disk
in: ah = disk_seek [0C]
ch = sector
dh = head
dl = drive
es:bx = buffer pointer
out: cf = error
ah = return code (see rd_disk_stat)
PC-AT ALTERNATE DISKETTE RESET - rom_disk
in: ah = alt_reset_disk [0D]
dl = drive
out: